#ifndef ZUS_WAVE_HPP
#define ZUS_WAVE_HPP

#include "app/base_app.hpp"
#include "gl/gl_utils.hpp"

class ZUSWave final: public App
{
public:
    using App::App;

protected:
    void RenderFrame(double delta_time, double total_time) override;
    void RenderConfigUI() override;

    void OnInitialize() override;
    void OnCleanup() override;
private:
    uint8_t     *m_gray_data_;
    uint8_t     *m_color_map_;
    int32_t      m_current_frame_;
    int32_t      m_enabled_channels_;
    int32_t      m_area_flags_;
    bool         m_enable_animate_;

    GL::ProgramPtr     m_prog_;
    GL::VertexArrayPtr m_draw_vao_;
    GL::TexturePtr     m_tex_gray_;
    GL::TexturePtr     m_tex_lut_;
};

#endif /* ZUS_WAVE_HPP */
